﻿Imports System.Runtime.Serialization

''' <summary>
''' Clase serializable para guardar la información
''' </summary>
''' <remarks></remarks>
''' JS: Juan Antonio Sanjuan juanantonios@gmail.com
<Serializable()> _
Public Class Configuracion
    ''' <summary>
    ''' JS: Constructor para dejar los valores por defecto
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()
        Me.IP = ""
        Me.Puerto = ""
        Me.CapasSQL = ""
        Me.CadenaConexion = ""
        Me.Cartografia = ""
        Me.ColorCartografia = New Colores()
        Me.XInicial = 0
        Me.YInicial = 0
        Me.ZInicial = 0
        revisarTabla()
    End Sub

    ''' <summary>
    ''' JS: Revisa que la tabla de la capa SQL siempre 
    ''' s encuentre instanciada
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub revisarTabla()
        If (Me.CapaSQLTabla Is Nothing) Then
            Dim objTablaCapas = New DataTable
            objTablaCapas.Columns.Add("Nombre", GetType(Object))
            objTablaCapas.Columns.Add("SQL", GetType(Object))
            objTablaCapas.Columns.Add("Tipo", GetType(Object))
            objTablaCapas.Columns.Add("Color", GetType(Object))
            objTablaCapas.Columns.Add("Tamano", GetType(Object))
            Me.CapaSQLTabla = objTablaCapas
        End If
    End Sub

    Private _IP As String
    ''' <summary>
    ''' Propiedad Dirección IP o Nombre del equipo donde
    ''' se encuentra el servidor WEB
    ''' </summary>
    ''' <value>La ip o vacia si no se encuentrainiciada</value>
    ''' <returns>Una cadena con el valor de la IP</returns>
    ''' <remarks></remarks>
    Public Property IP() As String
        Get
            Return _IP
        End Get
        Set(ByVal value As String)
            _IP = value
        End Set
    End Property

    Private _Puerto As String
    ''' <summary>
    ''' Puerto de comunicaciones con el servidor
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Puerto() As String
        Get
            Return _Puerto
        End Get
        Set(ByVal value As String)
            _Puerto = value
        End Set
    End Property

    Private _CapasSQL As String
    ''' <summary>
    ''' Datos de la última capa SQL creada
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property CapasSQL() As String
        Get
            Return _CapasSQL
        End Get
        Set(ByVal value As String)
            _CapasSQL = value
        End Set
    End Property

    Private _CadenaConexion As String
    ''' <summary>
    ''' Cadena de Conexión ODBC con acceso al servidor de base de datos
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property CadenaConexion() As String
        Get
            Return _CadenaConexion
        End Get
        Set(ByVal value As String)
            _CadenaConexion = value
        End Set
    End Property

    Private _Cartografia As String
    ''' <summary>
    ''' Ruta donde se encuentra la cartografia
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Cartografia() As String
        Get
            Return _Cartografia
        End Get
        Set(ByVal value As String)
            _Cartografia = value
        End Set
    End Property

    
    Private _ColorCartografia As Colores
    ''' <summary>
    ''' Color de la cartografía
    ''' </summary>
    ''' <remarks></remarks>
    Public Property ColorCartografia() As Colores
        Get
            Return _ColorCartografia
        End Get
        Set(ByVal value As Colores)
            _ColorCartografia = value
        End Set
    End Property
    
    Private _CapaSQLTabla As DataTable
    ''' <summary>
    ''' Tabla para manejar la estructura de las capas que se desean ver
    ''' </summary>
    ''' <value></value>
    ''' <returns>Un dataTabla con la estructura para manejar capas</returns>
    ''' <remarks></remarks>
    Public Property CapaSQLTabla() As DataTable
        Get
            Return _CapaSQLTabla
        End Get
        Set(ByVal value As DataTable)
            _CapaSQLTabla = value
        End Set
    End Property


    Private _XInicial As Integer
    ''' <summary>
    ''' Posicion X al inicio del sistema
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property XInicial() As Integer
        Get
            Return _XInicial
        End Get
        Set(ByVal value As Integer)
            _XInicial = value
        End Set
    End Property

    Private _YInicial As String
    ''' <summary>
    ''' Posicion y al inicio del sistema
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property YInicial() As Integer
        Get
            Return _YInicial
        End Get
        Set(ByVal value As Integer)
            _YInicial = value
        End Set
    End Property

    Private _ZInicial As Integer
    ''' <summary>
    ''' Posicion z al inicio del sistema
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property ZInicial() As Integer
        Get
            Return _ZInicial
        End Get
        Set(ByVal value As Integer)
            _ZInicial = value
        End Set
    End Property

    ''' <summary>
    ''' Retorna una enumeracion de tipo TIPO_ENTIDAD
    ''' para facilitar la conversion de string a la enumeracion
    ''' que maneja los tipos de entidades posibles
    ''' </summary>
    ''' <param name="objRegistro"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function getTipoEntidad(ByVal objRegistro As DataRow) As TIPO_ENTIDAD
        If (objRegistro("Tipo").ToString() = "Linea") Then
            Return TIPO_ENTIDAD.Linea
        ElseIf (objRegistro("Tipo").ToString() = "Triangulo") Then
            Return TIPO_ENTIDAD.Triangulo
        ElseIf (objRegistro("Tipo").ToString() = "Cuadrado") Then
            Return TIPO_ENTIDAD.Rectangulo
        End If
        Return TIPO_ENTIDAD.Rectangulo
    End Function


End Class
